using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Serialization;

namespace DigitalFortress {
	/// <summary>
	/// Membership data of an user.
	/// </summary>
	[DataContract(Namespace = "http://digitalfortress.com", Name = "Membership")]
	public partial class Membership {

		#region Fields
		private Guid userId;
		private string _email;
		private System.DateTime? _lastLoginDate;
		private string _description;
		private User _user;
		#endregion Fields

		#region Properties
		/// <summary>
		/// UserId Property Name.
		/// </summary>
		public const string UserIdProperty = "UserId";
		/// <summary>
		/// Membership Id.
		/// </summary>
		[DataMember(IsRequired = false, Name = UserIdProperty, Order = 0)]
		public Guid UserId {
			get {
				return userId;
			}
			set {
				userId = value;
			}
		}

		/// <summary>
		/// Email Property Name.
		/// </summary>
		public const string EmailProperty = "Email";
		/// <summary>
		/// E-mail for this user.
		/// </summary>
		[DataMember(IsRequired = false, Name = EmailProperty, Order = 1)]
		public string Email {
			get {
				return this._email;
			}
			set {
				this._email = value;
			}
		}

		/// <summary>
		/// LastLoginDate Property Name.
		/// </summary>
		public const string LastLoginDateProperty = "LastLoginDate";
		/// <summary>
		/// Last login date.
		/// </summary>
		[DataMember(IsRequired = false, Name = LastLoginDateProperty, Order = 2)]
		public DateTime? LastLoginDate {
			get {
				return this._lastLoginDate;
			}
			set {
				this._lastLoginDate = value;
			}
		}

		
		/// <summary>
		/// Description Property Name.
		/// </summary>
		public const string DescriptionProperty = "Description";
		/// <summary>
		/// Description of this user.
		/// </summary>
		[DataMember(IsRequired = false, Name = DescriptionProperty, Order = 3)]
		public string Description {
			get {
				return this._description;
			}
			set {
				this._description = value;
			}
		}

		/// <summary>
		/// User Property Name.
		/// </summary>
		public const string UserProperty = "User";
		/// <summary>
		/// User that this membership belongs to.
		/// </summary>
		[DataMember(IsRequired = false, Name = UserProperty, Order = 4)]
		public User User {
			get {
				return this._user;
			}
			set {
				this._user = value;
			}
		}
		#endregion Properties
	}
}
